<?php
namespace \DragonU\Core;
/**
 * Used to load CorePress library files using SPL autoload.
 *
 * @internal
 * Copyright (c) 2009, Jacob Santos
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without modification, are permitted
 * provided that the following conditions are met:
 *  * Redistributions of source code must retain the above copyright notice, this list of conditions
 *    and the following disclaimer.
 *  * Redistributions in binary form must reproduce the above copyright notice, this list of
 *    conditions and the following disclaimer in the documentation and/or other materials provided
 *    with the distribution.
 *  * Neither the name of the DragonU nor the names of its contributors may be used to endorse or
 *    promote products derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
 * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * @author Jacob Santos <wordpress@santosj.name>
 * @license http://www.opensource.org/licenses/bsd-license.php New BSD license
 * @package DragonU
 * @subpackage Loader
 * @since 0.1
 */

/**
 * Autoload CorePress libraries.
 *
 * Requires file when class has been found. This can fail and will not.
 *
 * @since 0.1
 *
 * @param string $class Class name.
 */
function corepress_autoload($class)
{
	$fileName = str_replace('\\', DIRECTORY_SEPARATOR, $class );
	$fileName = trim($fileName, DIRECTORY_SEPARATOR);

	$file = __DIR__ . DIRECTORY_SEPARATOR . $fileName . '.php';

	if( file_exists( $file ) && is_readable( $file ) )
	{
		require_once( $file );
	}
	else
	{
		$file = corepress_class_to_file_list($class);

		if( false !== $file && is_readable( $file ) )
		{
			require_once( $file );
		}
	}
}

spl_autoload_register('\CorePress\corepress_autoload');

/**
 * List of all of the classes, in case the namespace -> path fails.
 *
 * @since 0.1
 *
 * @param string $class Class name.
 * @return string|bool False on failure.
 */
function corepress_class_to_file_list($class)
{
	$dir = __DIR__ . DIRECTORY_SEPARATOR;

	switch( strtolower( rtrim($class, '\\') ) )
	{
		case 'exception':
			return $dir . 'exception.php';
		default:
			return false;
	}

	return false;
}


